001 /* 002 * LocalAlignmentBlock.java 003 * 004 * Copyright 2003 Sergio Anibal de Carvalho Junior 005 * 006 * This file is part of NeoBio. 007 * 008 * NeoBio is free software; you can redistribute it and/or modify it under the terms of 009 * the GNU General Public License as published by the Free Software Foundation; either 010 * version 2 of the License, or (at your option) any later version. 011 * 012 * NeoBio is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 013 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 014 * PURPOSE. See the GNU General Public License for more details. 015 * 016 * You should have received a copy of the GNU General Public License along with NeoBio; 017 * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 018 * Boston, MA 02111-1307, USA. 019 * 020 * Proper attribution of the author as the source of the software would be appreciated. 021 * 022 * Sergio Anibal de Carvalho Junior mailto:sergioanibaljr@users.sourceforge.net 023 * Department of Computer Science http://www.dcs.kcl.ac.uk 024 * King's College London, UK http://www.kcl.ac.uk 025 * 026 * Please visit http://neobio.sourceforge.net 027 * 028 * This project was supervised by Professor Maxime Crochemore. 029 * 030 */ 031 032 package neobio.alignment; 033 034 /** 035 * This class is used by the {@linkplain CrochemoreLandauZivUkelsonLocalAlignment} 036 * algorithm to store the information of an alignment block. All fields are public (but 037 * final) in order to simplify the access to the data. 038 * 039 * <P>For more information on how this class is used, please refer to the specification 040 * of the <CODE>CrochemoreLandauZivUkelsonLocalAlignment</CODE> class.</P> 041 * 042 * @author Sergio A. de Carvalho Jr. 043 * @see CrochemoreLandauZivUkelsonLocalAlignment 044 */ 045 public class LocalAlignmentBlock extends AlignmentBlock 046 { 047 /** 048 * The value of the highest scoring path which starts at the input border of this 049 * block and ends inside it, called E-path. 050 */ 051 public int[] E_path_score; 052 053 /** 054 * An array of pointers to blocks that are source of E-paths. 055 */ 056 public LocalAlignmentBlock[] E_path_ancestor; 057 058 /** 059 * Indexes of of the entry in the ancestor block that is the source of the E-path. 060 */ 061 public int[] E_path_ancestor_index; 062 063 /** 064 * The value of the highest scoring path which starts inside the block and ends at its 065 * output border. 066 */ 067 public int[] S_path_score; 068 069 /** 070 * The type of the highest scoring path ending at a given position of the output 071 * border of a block. 072 */ 073 public byte[] path_type; 074 075 /** 076 * The direction to the source of the S-path of the new vertex of this block. 077 */ 078 public byte S_direction; 079 080 /** 081 * The value of the highest scoring path contained in this block, called C-path. 082 */ 083 public int C; 084 085 /** 086 * Creates a new root block. 087 * 088 * @param factor1 factor of the first sequence being aligned 089 * @param factor2 factor of the second sequence being aligned 090 */ 091 LocalAlignmentBlock (Factor factor1, Factor factor2) 092 { 093 super (factor1, factor2); 094 095 E_path_score = S_path_score = new int[] {0}; 096 E_path_ancestor = new LocalAlignmentBlock [] {this}; 097 E_path_ancestor_index = new int [] {0}; 098 } 099 100 /** 101 * Creates a new alignment block, with all arrays created with the specified size. 102 * 103 * @param factor1 factor of the first sequence being aligned 104 * @param factor2 factor of the second sequence being aligned 105 * @param size size of the arrays to be created 106 */ 107 LocalAlignmentBlock (Factor factor1, Factor factor2, int size) 108 { 109 super (factor1, factor2, size); 110 111 E_path_score = new int [size]; 112 E_path_ancestor = new LocalAlignmentBlock [size]; 113 E_path_ancestor_index = new int [size]; 114 S_path_score = new int [size]; 115 path_type = new byte [size]; 116 } 117 }